package com.qp;

import com.qp.opc.OpcUaClientFacade;
import com.qp.opc.OpcUaClientFactory;
import com.qp.opc.OpcUaConfig;
import com.qp.opc.OpcUaUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 角模块
 */
public class OpcRead2C {
    //日志
    private static final Logger log = LoggerFactory.getLogger(OpcUaClientFactory.class);

    public static void main(String[] args) {
        try {
            //连接
            OpcUaConfig opcConfig = new OpcUaConfig().setUrl("opc.tcp://192.168.31.13:49320");
//            OpcUaConfig opcConfig = new OpcUaConfig().setUrl("opc.tcp://127.0.0.1:49320");
            OpcUaClientFacade client = OpcUaClientFactory.getClient(opcConfig);

//                    try {
//            Set<String> names = OpcUaUtil.browse(client, "Jiao_Mokuai_PLC.Jiao_Mokuai_Product");
//            List<String> keyList = new ArrayList<>();
//            keyList.addAll(names);
//            Collections.sort(keyList);
//            for (String name : keyList) {
//                System.out.println("opcKeyList.add(\""+name+"\");");
//            }
//        } catch (Exception ex) {
//            ex.printStackTrace();
//        }


            for (int i = 1; i < 10; i++) {
                Long start = System.currentTimeMillis();

                List<String> opcKeyList = new ArrayList<>();
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.AssemblyType_L");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.AssemblyType_R");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.CarType");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Mes_Zs_AssType_L");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Mes_Zs_AssType_R");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Mes_Zs_SwlAssType_L");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Mes_Zs_SwlAssType_R");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_1");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_10");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_11");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_12");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_13");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_14");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_15");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_16");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_17");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_18");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_19");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_2");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_20");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_3");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_4");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_5");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_6");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_7");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_8");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Ms-Zs_Data_9");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.PR_Code_L");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.PR_Code_R");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_1");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_10");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_11");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_12");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_13");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_14");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_15");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_16");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_17");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_18");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_19");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_2");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_20");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_21");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_22");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_23");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_24");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_25");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_26");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_27");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_28");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_29");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_3");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_30");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_31");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_32");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_33");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_34");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_35");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_36");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_37");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_38");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_39");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_4");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_40");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_41");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_42");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_43");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_44");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_45");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_46");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_47");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_48");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_49");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_5");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_50");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_51");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_6");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_7");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_8");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Part_Type_9");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.RecipeNum");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_1");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_10");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_11");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_12");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_13");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_14");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_15");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_16");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_17");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_18");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_19");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_2");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_20");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_21");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_22");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_23");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_24");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_25");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_26");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_27");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_28");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_29");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_3");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_30");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_4");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_5");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_6");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_7");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_8");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Tight_Mode_9");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_1");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_10");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_11");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_12");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_13");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_14");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_15");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_16");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_17");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_18");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_19");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_2");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_20");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_3");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_4");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_5");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_6");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_7");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_8");
                opcKeyList.add("Jiao_Mokuai_PLC.Jiao_Mokuai_Product.Zs-Ms_Data_9");
                Map<String, Object> opcValueMap = OpcUaUtil.readValuesToMap(client, opcKeyList);
                if (opcValueMap != null) {
//                    for (Map.Entry<String, Object> entry : opcValueMap.entrySet()) {
//                        log.info("OPC 读取的Key: {}，值：{}", entry.getKey(), entry.getValue());
//                    }
                    log.info("size=" + opcValueMap.size());
                }
                System.out.println(i + "耗时：" + (System.currentTimeMillis() - start));
                Thread.sleep(200);
            }


        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}